package com.yuanqi.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;

/**
 * 销售订单
 * @TableName sales_order
 */
@TableName(value ="sales_order")
@Data
public class SalesOrder implements Serializable {
    /** 主键 */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 销售订单号 */
    @TableField("so_code")
    private String soCode;

    /** 订单编号（兼容旧版本） */
    @TableField("order_code")
    private String orderCode;

    /** 客户ID */
    @TableField("customer_id")
    private Long customerId;

    /** 客户名称（兼容旧版本） */
    @TableField("customer_name")
    private String customerName;

    /** 销售日期（兼容旧版本） */
    @TableField("order_date")
    private Date orderDate;

    /** 交货日期（兼容旧版本） */
    @TableField("delivery_date")
    private Date deliveryDate;

    /** 总金额（兼容旧版本） */
    @TableField("total_amount")
    private BigDecimal totalAmount;

    /** 税率（兼容旧版本） */
    @TableField("tax_rate")
    private BigDecimal taxRate;

    /** 税额（兼容旧版本） */
    @TableField("tax_amount")
    private BigDecimal taxAmount;

    /** 币种 */
    @TableField("currency")
    private String currency;

    /** 是否含税价 */
    @TableField("tax_included")
    private String taxIncluded;

    /** 预计发货日期 */
    @TableField("expected_ship_date")
    private Date expectedShipDate;

    /** 订单状态 */
    private Integer status;

    /** 备注 */
    private String remark;

    /** 创建时间 */
    @TableField("created_at")
    private Date createdAt;

    /** 更新时间 */
    @TableField("updated_at")
    private Date updatedAt;

    // ====== 新增字段（与数据库列保持一致，前端无需改动） ======

    /** 销售日期 */
    @TableField("sale_date")
    private Date saleDate;

    /** 联系电话 */
    @TableField("contact_phone")
    private String contactPhone;

    /** 地区 */
    private String region;

    /** 销售负责人 */
    @TableField("sales_rep")
    private String salesRep;

    /** 负责人电话 */
    @TableField("resp_phone")
    private String respPhone;

    /** 详细地址 */
    @TableField("shipping_address")
    private String shippingAddress;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        SalesOrder other = (SalesOrder) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()));
    }
}
